APIs (Application Programming Interfaces) are essential for modern web development. They allow different software systems to communicate with each other, enabling the integration of external data and services into your web applications.
An API defines a set of rules and protocols for requesting and exchanging data between software systems. APIs can be used to retrieve information from external sources, send data to external services, or perform various other actions.
The Fetch API is a modern, promise-based API for making HTTP requests. Here's how to make a GET request using fetch:
const apiUrl = 'https://api.example.com/data';
fetch(apiUrl)
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(data => {
console.log(data);
})
.catch(error => {
console.error('Error:', error);
});
After making a request, you need to handle the response. The Fetch API returns a promise that resolves to the Response object representing the response to the request.
fetch(apiUrl)
.then(response => response.json())
.then(data => {
console.log(data);
})
.catch(error => {
console.error('Error:', error);
});
It's important to handle errors that may occur during the API request:
fetch(apiUrl)
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(data => {
console.log(data);
})
.catch(error => {
console.error('Error:', error);
});
To send data to an API, you can use the POST method:
const postData = { name: 'John', age: 30 };
fetch(apiUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(postData)
})
.then(response => response.json())
.then(data => {
console.log(data);
})
.catch(error => {
console.error('Error:', error);
});
Many APIs require an API key for authentication. You can include the API key in the request headers:
fetch(apiUrl, {
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
})
.then(response => response.json())
.then(data => {
console.log(data);
})
.catch(error => {
console.error('Error:', error);
});
APIs often involve asynchronous operations. You can use async/await for cleaner and more readable asynchronous code:
async function fetchData() {
try {
const response = await fetch(apiUrl);
if (!response.ok) {
throw new Error('Network response was not ok');
}
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Error:', error);
}
}
fetchData();
Here are some real-world examples of API calls:
// ***********open Browser's Console after run**********
const weatherApiUrl='https://api.openweathermap.org/data/2.5/weather?q=Connaught%20Place,%20New%20Delhi,IN&appid=5138083d7d4172b39d923e2fce174930';fetch(weatherApiUrl)
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(data => {
const weatherInfo = data.weather[0];
const mainInfo = data.main;
const locationInfo = data.sys;
const weatherDetails = `
Location: ${data.name}, ${locationInfo.country}
Weather: ${weatherInfo.main} (${weatherInfo.description})
Temperature: ${mainInfo.temp}K (Feels like: ${mainInfo.feels_like}K)
`;
outputResult(weatherDetails); // Display the weather data in the output area
})
.catch(error => {
outputResult(`Error: ${error.message}`); // Display error in the output area
});
function outputResult(message) {
console.log(message);
}
// ***********open Browser's Console after run**********
const userApiUrl = 'https://randomuser.me/api/';
fetch(userApiUrl)
.then(response => response.json())
.then(data => {
const person = data.results[0]; // Accessing the first person's information
console.log(`Name: ${person.name.first} ${person.name.last}`);
console.log(`Gender: ${person.gender}`);
console.log(`Location: ${person.location.city}, ${person.location.state}, ${person.location.country}`);
console.log(`Email: ${person.email}`);
console.log(`DOB: ${person.dob.date}, Age: ${person.dob.age}`);
console.log(`Phone: ${person.phone}`);
})
.catch(error => {
console.error('Error:', error);
})